package com.example.learningnote.basic;

import android.util.Log;

public class ArrayDemo {
    public static void main(){
        // 数组是引用数据类型
        // 创建数组时，会开辟连续的内存空间
        // 声明数组
        int[] intArray;
        // 创建数组
        intArray = new int[5];
        // 即声明又创建
        String[] StringArray = new String[5];
        // char 是一种基本数据类型（primitive type），占用 2 个字节（16 位），用于表示单个 Unicode 字符。例如：char c = 'A';
        // String 是一种引用数据类型（reference type），本质上是一个类（java.lang.String），可以表示由多个字符组成的序列。例如：String s = "Hello";
        // 初始化数组
        char[] charArray = {'a', 'b', 'c'};

        Log.d("ArrayDemo" , "intArray 初始化的元素" + intArray[3]);//  创建后默认值为 0
        Log.d("ArrayDemo" , "StringArray 初始化的元素" + StringArray[3]); // 默认值为null


        // for循环语句 foreach循环
        int[] numbers = {1, 2, 3, 4};
        for (int num : numbers) {
            Log.d("ArrayDemo", "数据类型 numbers: " + num);
        }

        // 冒泡排序
        int[] initInts = { 21, 12, 34, 56, 32};
        int temp;
        for (int i = 0 ; i < initInts.length-1 ; i++){
           for (int j = 0; j < initInts.length - i - 1; j++){
               if(initInts[j] > initInts[j+1]){
                   temp = initInts[j];
                   initInts[j] =  initInts[j+1];
                   initInts[j+1] = temp;
               }
           }

        }
        for (int i : initInts) {
            Log.d("ArrayDemo", "冒泡排序结果: " + i);
        }

        // 二维数组
        int[][] intArrays; // 其他声明方式  float floatArrays [][];  double[] doubleArrays[];
        // 声明并创建
        char[][] chars = new char[3][5]; // 创建3行5列
        // 也可以指定不同列数
        float[][] floats = new float[3][]; // 创建3行
        floats[0] = new float[2];
        floats[1] = new float[3];
        floats[2] = new float[4];
    }
}
